
import dataPreferences from '@ohos.data.preferences'  // 导入首选项
import { AgUser } from '../services/Auth';
import { QATopModel } from '../services/RankingServices';
import { Constants } from './Constants';


export class AppStorageKit {

  static async SetLoginUser<T>(data: T,context) {
    // 保存数据到内存中
    AppStorage.SetOrCreate<T>('user', data);

    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE);
    store.put(Constants.LOGIN_USER,JSON.stringify(data));
    await store.flush(); // 将数据保存到磁盘
  }

  static async GetLoginUser<T>(context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE);
    let res = await store.get(Constants.LOGIN_USER,"{}");
    return JSON.parse(res.toString()) as AgUser;
  }

  static async DelLoginUser<T>(context) {
    AppStorage.Delete('user');

    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE);
    await store.delete(Constants.LOGIN_USER);
    await store.flush();
  }

  static async SetRanking<T>(data: T,context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE);
    store.put("ranking",JSON.stringify(data));
    await store.flush(); // 将数据保存到磁盘
  }

  static async GetRank(context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE);
    let res = await store.get("ranking","{}");
    return JSON.parse(res.toString()) as QATopModel[];
  }

  static async SetCarID(cardID,context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE);
    store.put("cardid",cardID);
    await store.flush(); // 将数据保存到磁盘
  }

  static async GetCarkID(context) {
    // 保存数据到首选项(磁盘持久化)
    const store = await dataPreferences.getPreferences(context, Constants.PREFERENCES_STORE);
    let res = await store.get("cardid","");
    return res;
  }

}